/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.context.conexion;

import com.context.AppContext;
import java.sql.Connection;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.www.jdbc.JdbcUtil;
import util.www.jdbc.JdbcProperties;
import util.www.sql.domain.BaseDatosSql;
import util.www.sql.domain.TablaSql;

/**
 *
 * @author Rdelacruz
 */
public class EnahoConexion {
     
    //public static String url = "jdbc:sqlserver://localhost:1433;databaseName=enaho;user=sa;password=12345;";
    private static JdbcProperties jdbcProperties;
    
    private static final BaseDatosSql bd = new BaseDatosSql();    
    
    public static Connection getConexion() throws Exception {
        if(jdbcProperties==null) {
            //jdbcProperties = ConexionJDBC.getInstancia("jdbc_local.properties");            
            //jdbcProperties = JdbcUtil.getInstancia("jdbc.properties");
            jdbcProperties = AppContext.getInstancia().getJdbcProperties();
        }
        return JdbcUtil.getConexion(jdbcProperties);
    }    
    
    //public static void operarConexion(Operacion op) throws Exception {
    //    ConexionSQLServer.operarConexion(op, url);
    //} 
    
    /*
    //DEFICIENTE
    private static BaseDatosSql getBaseDatos() throws Exception {
        Connection con = null;
        try {     
            con = getConexion();
            return getBaseDatos(con);
        } finally {
            if(con!=null) con.close();                     
        }  
    }
    */
    
    /*
    //DEFICIENTE
    private static BaseDatosSql getBaseDatos(Connection con) throws Exception {
        if(bd==null) {
            bd = new BaseDatosSql();   
            //JdbcUtil.operarEnSQLServer(con,bd);                       
        }
        return bd;
    }
    */
    
    public static TablaSql getTablaEnaho(Connection con, String nombreTabla) throws Exception {  
        if(!bd.existeTable(nombreTabla)) {
            //System.out.println("OBTENIENDO METADATA DE LA TABLA");
            JdbcUtil.agregarTablaSiExisteEnConexion(con, bd, "dbo", nombreTabla);
        }        
        return bd.getTabla(nombreTabla);//puede ser nulo
    }
                
    public static void main(String args[]) {
        try {
            
            /*
            
            for(String nombre : getBaseDatos().getListaNombreTablas()) {
                System.out.println(nombre);
            }
            
            
            TablaSql t1 = getTablaEnaho("Campo_Hogar");
            TablaSql t2 = getTablaEnaho("CampoEna01_Cap_100");
            TablaSql t3 = getTablaEnaho("CampoEna01_Cap_100A");
            TablaSql t4 = getTablaEnaho("CampoEna01_Cap_100B");
            System.out.println("t1="+t1.getNombreColumnasClave());
            System.out.println("t2="+t2.getNombreColumnasClave());
            System.out.println("t3="+t3.getNombreColumnasClave());
            System.out.println("t4="+t4.getNombreColumnasClave());
            */
            
        } catch (Exception ex) {
            Logger.getLogger(EnahoConexion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   
}
